package tec;

class TestPassagerLunatique
    extends TestPassagerAbstrait{

    void lancerTestPassagerLunatique(){
	int nbTest = 8;
	super.lancerTestPassagerAbstrait();

	testChoixChangerPlace();
	System.out.print('.'); nbTest++;

	testChoixPlaceMontee();
	System.out.print('.'); nbTest++;

	System.out.println("(" + nbTest + "):OK: " + getClass().getName()); 

    }

    void testChoixChangerPlace(){
	
	Passager p1 = new PassagerLunatique("Marc",3);
	FauxBus bad = new FauxBus(); //busAssisDebout
	bad.status = FauxBus.ASSISDEBOUT;
	p1.accepterPlaceDebout();
	
	p1.nouvelArret(bad,1);
	assert "demanderChangerEnAssis" == bad.messages.getLast() : "debout->assis place libre";
	p1.accepterPlaceAssise();
	p1.nouvelArret(bad,2);
	assert "demanderChangerEnDebout" == bad.messages.getLast() : "assis->debout place libre";

	Passager p2 = new PassagerLunatique("Marc",3);
	FauxBus bd = new FauxBus();
	bd.status = FauxBus.DEBOUT;
	p2.accepterPlaceDebout();
	
	p2.nouvelArret(bd,1);
	assert 1 == bd.messages.size() : "debout->assis place occupees";

	Passager p3 = new PassagerLunatique("Marc",3);
	FauxBus ba = new FauxBus();
	ba.status = FauxBus.ASSIS;
	p3.accepterPlaceAssise();
	
	p3.nouvelArret(ba,1);
	assert 1 == ba.messages.size() : "assis->debout place occupees";

    }

    void testChoixPlaceMontee(){
	
	Passager passager1 = new PassagerLunatique("Marc",5);
	FauxBus bd = new FauxBus();
	bd.status = FauxBus.DEBOUT;
	passager1.monterDans(bd);
	assert "demanderPlaceDebout"== bd.messages.getLast() : "bus DEBOUT";

	Passager passager2 = new PassagerLunatique("Marc",5);
	FauxBus bad = new FauxBus();
	bad.status = FauxBus.ASSISDEBOUT;
	passager2.monterDans(bad);
	assert "demanderPlaceDebout"== bad.messages.getLast() : "bus ASSISDEBOUT";
	
	Passager passager4 = new PassagerLunatique("Marc",5);
	FauxBus ba = new FauxBus();
	ba.status = FauxBus.ASSIS;
	passager4.monterDans(ba);
	assert 3 == ba.messages.size() : "bus ASSIS";

	Passager passager5 = new PassagerLunatique("Marc",5);
	FauxBus bp = new FauxBus();
	bp.status = FauxBus.PLEIN;
	passager5.monterDans(bp);
	assert 2 == bp.messages.size() : "bus PLEIN";
    }

    public PassagerAbstrait creerPassager(String nom, int destination){
	PassagerAbstrait passager = new PassagerLunatique(nom, destination);
	return passager;
    }


}